package com.errol.batchprocessor.batchprocessor.abs;

import org.springframework.lang.NonNull;

/**
 * 扩展点接口基类
 *
 * @author zhang xiao bin
 * @version v1.0
 * @date 2021/02/26
 * @since v5.0.5
 **/
public interface AbstractAdvisor<AP extends AbstractAdvisorPayload> {

    /**
     * 当前扩展点接口实现是否应该执行
     *
     * @param advisorPayload 发放扩展类型
     * @return true 表示应该执行
     */
    boolean shallProcess(@NonNull AP advisorPayload);

    /**
     * 整个扩展实现的优先级
     *
     * @return 优先级，按从小到大排序，除了 container 不能小于 1
     */
    int priority();
}
